/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gruppenkalenderProjekt.kalenderinterface;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.rmi.RemoteException;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import layout.TableLayout;

/**
 *
 * @author Gruppe 2
 */
class Start {
    private String serverIP="";
    private InterfaceClient ic = new InterfaceClient(serverIP);

    //Strings initiieren
    private static String neuerKalendereintragButtonString = "Kalendereinträge verwalten";
    private static String neuerKalenderButtonString = "Kalender verwalten";
    private static String neuerBenutzerButtonString = "Benutzer verwalten";
    private static String neueKategorieButtonString = "Kategorien verwalten";
    private static String fragezeichenButtonString = "?";
    private static String beendenButtonString = "Beenden";
    private static String frameString = "Gruppenkalender Start";
    //Labels, Frame, Textfelder und Buttons initiieren
    final JButton neuerKalendereintragButton = new JButton(neuerKalendereintragButtonString);
    final JButton neuerKalenderButton = new JButton(neuerKalenderButtonString);
    final JButton neuerBenutzerButton = new JButton(neuerBenutzerButtonString);
    final JButton neueKategorieButton = new JButton(neueKategorieButtonString);
    final JButton fragezeichenButton = new JButton(fragezeichenButtonString);
    final JButton beendenButton = new JButton(beendenButtonString);
    JFrame frame = new JFrame(frameString);
    private ImageIcon kalender;
    private JLabel kalenderLabel;
    private Container contentPane = null;


    public JPanel generateComponents(GruppenkalenderInterface gki){
        serverIP=gki.getGki().getServerIP();
        // Hole den Benutzernamen aus dem GruppenkalenderInterface
        neuerKalendereintragButton.setPreferredSize(new Dimension(350, 35));        // width, height
        neuerKalenderButton.setPreferredSize(new Dimension(350, 35));               // width, height

        try { //ueberpruefen ob eingeloggter Benutzer ein Superuser ist
            if (gki.getAktuellerBenutzer().isSuperbenutzer()) {
                neuerKalenderButton.setEnabled(true);
            } else {
                neuerKalenderButton.setEnabled(false);
            }
        } catch (RemoteException re) {
            System.out.println("RemoteException");
            System.out.println(re);
        }

        try { //ueberpruefen ob eingeloggter Benutzer ein Superuser ist
            if (gki.getAktuellerBenutzer().isSuperbenutzer()) {
                neueKategorieButton.setEnabled(true);
            } else {
                neueKategorieButton.setEnabled(false);
            }
        } catch (RemoteException re) {
            System.out.println("RemoteException");
            System.out.println(re);
        }

        neuerBenutzerButton.setPreferredSize(new Dimension(350, 35));               // width, height


        try { //ueberpruefen ob eingeloggter Benutzer ein Superuser ist
            if (gki.getAktuellerBenutzer().isSuperbenutzer()) {
                neuerBenutzerButton.setEnabled(true);
            } else {
                neuerBenutzerButton.setEnabled(false);
            }
        } catch (RemoteException re) {
            System.out.println("RemoteException");
            System.out.println(re);
        }

        // Layout und Container initiieren
        Container contentPane = frame.getContentPane();
        BorderLayout layout = new BorderLayout();
        contentPane.setLayout(layout);

        //Hier wird der Benutzername der auf dem Label angezeigt werden soll geholt
        JLabel benutzernameLabel = null;
        try {
             benutzernameLabel = new JLabel("Sie sind als " + gki.getAktuellerBenutzer().getBenutzername() + " angemeldet");
        } catch (RemoteException re) {
            System.out.println("RemoteException");
            System.out.println(re);
        }
        
        // Panels
        JPanel big = new JPanel(new BorderLayout());

        // Das Panel für Buttons wird mit einem TableLayout initialisiert.
        double size[][] = {{10, 365,10},                         // Columns              Breite jeder Spalte (Komischerweise wird nur eine Spalte alleine nicht gesetzt)
            {35, 15, 35, 15, 35, 15, 35, 15, 35, 15, 35}};        // Rows                 Höhe jeder Zeile (35=Buttongröße, 15=Leerzeile)

        JPanel panelForButtons = new JPanel(new TableLayout(size));
        panelForButtons.setBorder(
                BorderFactory.createCompoundBorder(
                BorderFactory.createTitledBorder("Hauptmenü"),
                BorderFactory.createEmptyBorder(5, 5, 5, 5)));

        JPanel panelForQuestionAndQuit = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        panelForQuestionAndQuit.setPreferredSize(new Dimension(75, 50));      // width, height

        JPanel panelForPicture = new JPanel(new FlowLayout());
        panelForPicture.setPreferredSize(new Dimension(327, 500));            // width, height
        panelForPicture.setLayout(new BorderLayout());
        panelForPicture.setBorder(
                BorderFactory.createCompoundBorder(
                BorderFactory.createTitledBorder(" "),
                BorderFactory.createEmptyBorder(5, 5, 5, 5)));




        //OnButtonClick
        neuerKalendereintragButton.addActionListener(gki);
        neuerKalendereintragButton.setActionCommand("NeuerEintrag");
        neuerKalenderButton.addActionListener(gki);
        neuerKalenderButton.setActionCommand("KalenderBearbeiten");
        neuerBenutzerButton.addActionListener(gki);
        neuerBenutzerButton.setActionCommand("NeuerBenutzer");
        neueKategorieButton.addActionListener(gki);
        neueKategorieButton.setActionCommand("NeueKategorie");
        fragezeichenButton.addActionListener(gki);
        fragezeichenButton.setActionCommand("Fragezeichen");
        beendenButton.addActionListener(gki);
        beendenButton.setActionCommand("Beenden");

        //Komponenten den Panels zuordnen
        panelForButtons.add(benutzernameLabel, "1, 0");             //col,row (Zweierschritte bei den Zeilen wegen dem Zwischenraum
        panelForButtons.add(neuerKalendereintragButton, "1, 2");
        panelForButtons.add(neuerKalenderButton, "1, 4");
        panelForButtons.add(neuerBenutzerButton, "1, 6");
        panelForButtons.add(neueKategorieButton, "1, 8");

        panelForQuestionAndQuit.add(fragezeichenButton);
        panelForQuestionAndQuit.add(beendenButton);

        kalender = new ImageIcon("kalender.jpg"); //neues Image Icon anlegen, Bild liegt im Projektordner
        kalenderLabel = new JLabel(kalender); //Bild in ein JLabel stecken
        panelForPicture.add(kalenderLabel); //JLabel in das Panel stecken


        big.add(panelForButtons, BorderLayout.WEST);
        big.add(panelForPicture, BorderLayout.EAST);
        big.add(panelForQuestionAndQuit, BorderLayout.SOUTH);

        contentPane.add(big, BorderLayout.NORTH);
        return (JPanel) contentPane;
    }

    

}
